# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your Archipelago options are valid at this site:
#        https://archipelago.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default Mirror's Edge Template

game: Mirror's Edge
requires:
  version: 0.6.7 # Version of Archipelago required for this yaml to work as expected.
  game:
    Mirror's Edge: 1.2.0 # Version of the world required for this yaml to work as expected.

Mirror's Edge:
  ################
  # Game Options #
  ################
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-99: 0 # random value between 0 and 99
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  ################
  # Goal Options #
  ################
  goal:
    # Determines the victory condition.
    # 
    # Runner Bags + Final Level: Collect enough Runner Bags to unlock a Final Level and clear it.
    # Runner Bag Hunt: Collect a set number of Runner Bags spread across the multiworld.
    runner_bags_final_level: 50
    runner_bag_hunt: 0

  runner_bags_total:
    # Determines how many Runner Bags are in the item pool.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 25
    20: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-25: 0 # random value between 1 and 25

  runner_bags_required:
    # Determines how many Runner Bags are required to either win or unlock the final level.
    # 
    # If this number is higher than the total number of Runner Bags, it will be set to that number instead.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 25
    15: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-25: 0 # random value between 1 and 25

  #################
  # Logic Options #
  #################
  logic:
    # Determines the Logic level.
    # 
    # Regular: Requirements are aligned with the skills and knowledge of a more casual Mirror's Edge player.
    # 
    # Advanced: Requirements can require tighter execution, more creative routes, and performing moves off of unintended objects to progress.
    #           Glitches and professional movement are NOT included in Advanced logic.
    regular: 50
    advanced: 0

  ################
  # Item Options #
  ################
  open_world:
    # If enabled, all levels will be unlocked from the start.
    # Otherwise, you will start with 5 random levels unlocked and will need to unlock the rest by finding Level Unlock items in the multiworld.
    'false': 50
    'true': 0

  starting_ability_count:
    # Determines how many abilities Faith will start with. Abilities are randomly selected.
    # 
    # The intended experience is to start with 0, but you can add a few if you want to open up your early game.
    # There are 19 abilities total.
    # 
    # If a non-zero quantity is selected and paired with Open World, there will be very few progression items in your seed.
    # This effectively means fewer, larger spheres. Be advised.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 8
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-8: 0 # random value between 0 and 8

  ####################
  # Location Options #
  ####################
  include_pure_time_trial_pack_dlc:
    # If enabled, locations for the Pure Time Trial Pack DLC levels will be created when generating the multiworld.
    # 
    # Note: DLC setup and making sure the added levels work are the player's responsibility. Do NOT turn until you have tested them!
    # 
    # QUIRK ALERT! All 10 DLC levels share the index of Playgrounds One, making it impossible to unlock them individually.
    #              Whichever level gets unlocked first will also unlock the other 10. Be advised!
    'false': 50
    'true': 0

  include_2_star_ratings:
    # If enabled, locations for 2-Star Ratings on each level will be created when generating the multiworld.
    # 
    # Notes: These are considered fairly hard in vanilla time trials with access to all moves.
    # 
    #        They will therefore only be considered in logic when you have unlocked all moves.
    #        You can still send location checks if you manage to obtain the ratings before that.
    # 
    #        Difficulty can be mitigated with the Target Time Adjustment Percentage option below.
    #        You can also convert some filler items to useful Time Bonus items.
    'false': 50
    'true': 0

  include_3_star_ratings:
    # If enabled, locations for 3-Star Ratings on each level will be created when generating the multiworld.
    # 
    # Notes: These are considered very hard in vanilla time trials with access to all moves.
    # 
    #        They will therefore only be considered in logic when you have unlocked all moves.
    #        You can still send location checks if you manage to obtain the ratings before that.
    # 
    #        Difficulty can be mitigated with the Target Time Adjustment Percentage option below.
    #        You can also convert some filler items to useful Time Bonus items.
    'false': 50
    'true': 0

  ####################################
  # Difficulty Customization Options #
  ####################################
  target_time_adjustment_percentage:
    # Determines by what percentage Star Rating Target Times will be adjusted.
    # 
    # This can be useful for players who feel the vanilla target times are too challenging to meet.
    # 
    # Examples:
    #     - If set to 90, a target time of 1 minute 40 seconds will become 1 minute 30 seconds.
    #     - If set to 150, a target time of 1 minute 40 seconds will become 2 minutes 30 seconds.
    # 
    # Note that the adjusted target times won't be reflected in-game. Your location checks will still pivot on the adjusted times.
    # 
    # The Mirror's Edge Archipelago client will display the adjusted target times for each level under the Mirror's Edge tab.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 90
    # Maximum value is 200
    100: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-90-200: 0 # random value between 90 and 200

  useful_item_percentage:
    # Determines what percentage of filler items will get converted to useful items.
    # 
    # Useful items are various Time Bonus denominations: 1 Second, 3 Seconds, 5 Seconds
    # These will make meeting the star rating target times easier but are also level-specific for balance purposes.
    # 
    # The sum of all Time Bonuses for a given level will be subtracted from your final time.
    # 
    # The Mirror's Edge Archipelago client will display the useful items assigned to each level under the Mirror's Edge tab.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    50: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  ################
  # Trap Options #
  ################
  trap_percentage:
    # Determines what percentage of filler items will get converted to trap items.
    # 
    # Trap Items are the following:
    # - Injury Trap: HP is set to 1 with slower regeneration than usual
    # - Slippery Trap: Ground friction is nullified. Any movement in a direction will keep going in that direction until countered
    # - Slow Trap: Movement speed is greatly reduced
    # - Wide FOV Trap: Camera field-of-value is greatly increased
    # 
    # This percentage is applied to the remaining filler items AFTER the useful item conversion has taken place.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    0: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  trap_weights:
    # Determines the relative weights of each Trap Type if Trap Percentage is greater than 0.
    # 
    # Each weight is required to be zero or more.
    Injury Trap: 1
    Slippery Trap: 1
    Slow Trap: 1
    Wide FOV Trap: 1

  ###########################
  # Quality-of-life Options #
  ###########################
  fov_adjustment:
    # Determines what field-of-view value the camera will be forced to use.
    # 
    # This is a quality-of-life option since the game doesn't allow you to change FOV natively outside modifying engine INI files.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 80
    # Maximum value is 110
    90: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-80-110: 0 # random value between 80 and 110

  ###########################
  # Item & Location Options #
  ###########################
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with the specified amount of these items. Example: "Bomb: 1"
    {}

  start_inventory_from_pool:
    # Start with the specified amount of these items and don't place them in the world. Example: "Bomb: 1"
    # 
    # The game decides what the replacement items will be.
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []

  plando_items:
    # Generic items plando.
    []
